home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / READMEFiles / Guitar.README < prev    next >
Text File  |  1992-08-29  |  6KB  |  53 lines

  1.  
  2. CATEGORY:  MUSIC 
  3.  
  4. *********************************** RokNRole *****************************************
  5.                          
  6.              Interactive, Real-Time Guitar Synthesis Application
  7.                         for NeXT 2.0 or 2.1 Operating System
  8.  
  9. Copyright (c) 1992 - Rick A. Vander Kam  (CCRMA - Stanford University)
  10. All rights reserved.
  11.  
  12. email: rvk@ccrma.stanford.edu
  13. US mail: P.O. Box 6762, Stanford, CA  94309
  14. *****************************************************************************************
  15.  
  16.                             COMPILING
  17. This directory contains the files needed to compile the feedback guitar instrument application.
  18. Presumably, you have already uncompressed the tarfile and extracted all of the files.  To
  19. compile, cd to this directory in your unix shell and simply type "make".  This will compile
  20. everything and create the executable "RokNRole" program.
  21.  
  22.                         THE APPLICATION
  23. The synthesis algorithm is based on the Karplus/Strong string model [1] as extended by Charlie Sullivan [2].  This application implements a two-string instrument, where each "string" consists of an interpolated delay line, a fixed dc-blocking filter, and a variable low-pass FIR filter, all of which are connected in a feedback loop.  The "string" is "plucked" by loading the delay line with noise (of rich harmonic content), and then allowing the signal to evolve around the feedback loop.  The low-pass filter causes higher harmonics to decay more quickly, which is characteristic of plucked-string sounds.  The outputs of the two strings are added together and sent through an adjustable, nonlinear distortion section.  A user-selected mix of the distorted and undistorted signals is taken as the instrument's overall output, which is also scaled and fed back into the strings by means of an additional feedback path.  The instrument is constructed from standard MusicKit objects and four custom unit generators (signal processing macros for the NeXT's 56001 DSP chip).
  24.  
  25. The main source code for the instrument is in the two files "RokNRoleApp.h" and "RokNRoleApp.m".
  26. This is where the instrument is constructed and where the control messages originate.  I have
  27. also included the assembly code and ".README" files for the four custom unit generators which are used in the instrument.  By looking at the .README files you should be able to figure out what all the Objective C messages to these unit generators are doing.  See the NeXT documentation for details on the operation of the built-in MusicKit unit generators.
  28.  
  29. This is freeware, and it comes with no warranty!  It is intended for free distribution, and for educational and entertainment purposes only.  Please inform the author if you wish to market this software or a modified version of it.  (That is, please give a "starving student" a break!)
  30.  
  31.  
  32.                             CONTROL PANEL
  33. This is a brief explanation of the instrument's control panel, which you will see after launching the application.  The "Power" and "PLUCK" buttons are self-explanatory.  The pitches of the notes played by the two strings are set by the long sliders labeled "String 1 Tuning" and "String 2 Tuning."  A custom unit generator (FracdelayUG) running on the DSP chip is designed to allow smooth glissandi between pitches.  In the current implementation, if the position of a tuning slider is changed by less than 1.0 (i.e., the length of the corresponding delay line is changed by less than one sample), then a glissando will occur; if the change is larger than 1.0, the new length and new pitch are set immediately, without glissando.  The "Gliss Speed" control allows a trade-off of the rate and the smoothness of the glissando.  The "Gliss Speed" value represents the step size by which the coefficients in the interpolating filter of FracdelayUG are updated during the glissando.  Thus, a higher value of "Gliss Speed" corresponds to a faster rate, but a rougher transition since more intermediate values of the delay-line length are skipped.  By "dragging" a tuning slider rapidly back and forth over a distance of several samples, you can approximate hammer-on and pull-off effects.
  34.  
  35. Two sliders, labeled "a0" and "a1," are provided to control the timbre and decay rate of each string.  These sliders directly control the coefficients of three-tap FIR filters, which in turn affect the spectral content of the strings' output.  Normally, the value of "a1" is kept at least twice as large as that of "a0."  
  36.  
  37. Similarly, the three sliders labeled "x", "x^2" and "x^3" directly control the coefficients of the nonlinear (polynomial) filter used in the distortion unit.  You can use them to vary the amount of even- and odd-harmonic distortion that is present in the output (and thereby produce fairly realistic tube amp sounds and other effects).  The "Thresh" value is the clipping threshold, which represents the peak amplitude of the distorted signal.  The "Level" control allows you to set the desired mixture of distorted and undistorted signal which is sent to the output.  The undistorted signal is automatically scaled by the value of "Thresh" so that both versions of the signal are of comparable loudness at the time the are mixed.
  38.  
  39. The output signal is sent back into the strings through a feedback path whose length (in samples) is set by the "FB Path Length" slider.  The "FB Gain" control sets the scale factor for the feedback signal.  
  40.  
  41. The "Preset Chords" buttons play fifths, with the lower note approximately tuned to the button's labeled pitch.  these buttons also automatically implement the "PLUCK" action.
  42.  
  43.  
  44.                                 BUGS
  45. The application has simply refused to produce sound on certain machines, apparently due to bugs/variations in the NeXT sound driver controls and/or architecture.  However, this code has been proven to run successfully on most NeXT machines with Release 2.0 or 2.1 operating systems.  It has not yet been tested on pre-release 3.0 systems.  If you encounter any additional bugs, please report them to the author at the above address.
  46.  
  47. RVK
  48. CCRMA---Stanford University
  49. July 28, 1992
  50.  
  51. [1] K. Karplus and A. Strong.  "Digital Synthesis of Plucked String and Drum Timbres."  _Computer     Music Journal_  Vol. 7, No. 2 (1983).  pp. 43-55.
  52.  
  53. [2] C. Sullivan.  "Extending the Karplus-Strong Algorithm to Synthesize Electric Guitar Timbres with Distortion and Feedback."  _Computer Music Journal_  Vol. 14, No. 3 (1990).  pp. 26-37.